Une première représentation intuitive

Une première idée serait de coder le signe + par un 0 et le signe - par un 1. Ainsi $6_{10}=110_{2}$ se coderait alors en $0110_{2}$. Mais $-6_{10}$ se coderait alors en $1110_{2}$ comment faire la différence alors avec $14_{10}$?

Par conséquent nous allons devoir pous fixer un nombre de bits, $n$. On conserve alors le premier pour le signe et les $n-1$ autres pour le codage de la valeur absolue du nombre.

Ainsi sur 8 bits $-6_{10}$ se code en $1|0000110$

Déterminer le codage en binaire sur 8 bits puis sur 9 bits, des nombre suivants :
  • 11
  • -35
  • 26

Un premier problème avec cette repsentation est que le chiffre $0_{10}$ a deux représentation. En effet sur 3 bits: $0_{10}=0|00_{2}$ et $0_{10}=1|00_{2}$

Un autre problème se pose avec cette méthode sur l'addition de deux nombres en binaires, nous le verrons dans A.4.

Cette représentation des entiers relatifs n'est pas celle que l'informatique a choisi.

Le complément à deux.

Cas des entiers naturels

La représentation d'un nombre entier naturel en binaire se fait de la même manière que dans le paragrphe précédent.

Si on dispose de $n$ bits, le premier sera 0 pour indiquer que l'entier est positif. Et les $n-1$ autres seront le codage en binaire de l'entier.

Cela signifie aussi que si l'on dispose de $n$ bits, nous ne pourrons pas dépasser un entier plus grand que $2^{n-1}-1$. Puisque nous ne disposons que de $n-1$ bits.

Si l'on dispose de 5 bits. On a $12_{10}=01100_{2}$. Si l'on dispose que de 4 bits. On ne peut tout simplement coder 12 en binaire si nous considérons les entiers relatifs.

Cas des entiers négatifs.

Voila la procédure :

  1. on code la valeur absolue du nombre en binaire
  2. On remplace tous les 0 par des 1 et les 1 par des 0.
  3. On ajoute 1

Traitons le cas de $-12$ sur 8 bits :
  1. $12_{10}=1100_2$. Nous sommes sur 8 bits donc il faut écrire $12_{10}=00001100_2$.
  2. On remplace tous les 0 par des 1 et les 1 par des 0 : $00001100_2$ devient $11110011_2$
  3. On ajoute 1 :$\begin{array}{rrrrrrrrr} &&&&&1&1&\\ &1&1&1&1&0&0&1&1&\\ +&0&0&0&0&0&0&0&1\\ \hline\\ &1&1&1&1&0&1&0&0 \end{array}$
  • Vérifions le résultat en ajoutant -12 et 12 dans leur représentation binaire: $\begin{array}{rrrrrrrrr} &1&1&1&1&1&1&&&\\ &1&1&1&1&0&1&0&0\\ +&0&0&0&0&1&1&0&0\\ \hline\\ 1&0&0&0&0&0&0&0&0 \end{array}$

    Nous sommes sur 8 bits le 1 à la première position doit être enlevé. Nous retombons bien sur 0.

  • Déterminer la représentation en binaire sur 8 bits de $-19$ puis en 16 bits de $-72$.

    Il faut bien distinguer le nombre binaire de sa représentation en binaire.

    $12_{10}=1100_{2}$ mais en représentation en complément à 2 sur 4 bits $1100_{2}=-4$

    Borne inférieure et borne supérieur avec $n$ bits.

    Avec n bits nous pouvons coder uniquement des entiers compris entre $-(2^{n-1}-1)$ et $2^{n-1}-1$

    C'est le cas puisque le premier bits est réservés au signe de l'entier.

    Sitographie

    Bilan

    1. déterminer la représentation en complément à deux d'un entier relatif.
    2. additionner deux entier en binaire